<!DOCTYPE html>
            
<HTML>
<HEAD>
<meta name="booktitle" content="Developing Applications With Objective Caml" >
 <meta charset="ISO-8859-1"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<META name="GENERATOR" content="hevea 1.05-7 of 2000-02-24">
<META NAME="Author" CONTENT="Christian.Queinnec@lip6.fr">
<LINK rel=stylesheet type="text/css" href="videoc-ocda.css">
<script language="JavaScript" src="videoc.js"><!--
//--></script>
<TITLE>
 Objectives
</TITLE>
</HEAD>
<BODY class="regularBody">
<A HREF="book-ora001.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="book-ora003.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
<HR>

<H2> Objectives</H2><B>Objective CAML</B> is a programming language. One might ask why yet another
language is needed. Indeed there are already numerous existing languages
with new ones constantly appearing. Beyond their differences, the
conception and genesis of each one of them proceeds from a shared
motivation: the desire to abstract.
<DL COMPACT=compact>
<DT>
To abstract from the machine<DD> 
In the first place, a programming language permits one to neglect the
``mechanical'' aspect of the computer; it even lets one forget the
microprocessor model or the operating system on which the program will be
executed.

<DT>To abstract from the operational model<DD> The notion of function which
most languages possess in one form or another is borrowed from mathematics
and not from electronics. In a general way, languages substitute formal
models for purely computational viewpoints. Thus they gain
expressivity. 

<DT>To abstract errors<DD> This has to do with the attempt to guarantee
execution safety; a program shouldn't terminate abruptly or become
inconsistent in case of an error. One of the means of attaining this is
strong static typing of programs and having an exception mechanism in
place.

<DT>To abstract components (<FONT COLOR=navy>i</FONT>)<DD> Programming
languages make it possible to subdivide an application into different
software components which are more or less independent and autonomous.
Modularity permits higher-level structuring of the whole of a complex
application.

<DT>To abstract components (<FONT COLOR=navy>ii</FONT>)<DD> The existence
of programming units has opened up the possibility of their reuse in
contexts other than the ones for which they were developed. 
<EM>Object-oriented</EM> languages constitute another approach to
reusability permitting rapid prototyping.
</DL>Objective CAML is a recent language which takes its place in the
history of programming languages as a distant descendant of Lisp, having
been able to draw on the lessons of its cousins while incorporating the
principal characteristics of other languages. It is developed at
INRIA<A NAME="text1" HREF="book-ora005.html#note1"><SUP><FONT SIZE=2>1</FONT></SUP></A> and is supported by long experience with the conception of
the languages in the ML family. Objective CAML is a general-purpose language for the
expression of symbolic and numeric algorithms. It is object-oriented and
has a parameterized module system. It supports the development of
concurrent and distributed applications. It has excellent execution safety
thanks to its static typing, its exception mechanism and its garbage
collector. It is high-performance while still being portable. Finally, a
rich development environment is available.<BR>
<BR>
Objective CAML has never been the subject of a presentation to the ``general
public''. This is the task to which the authors have set themselves, giving
this exposition three objectives:
<OL type=1>
<LI>
 To describe in depth the Objective CAML language, its libraries and its
development environment.

<LI> To show and explain what are the concepts hidden behind the
programming styles which can be used with Objective CAML.

<LI> To illustrate through numerous examples how Objective CAML can serve
as the development language for various classes of applications.
</OL>
The authors' goal is to provide insight into how to choose a programming
style and structure a program, consistent with a given problem, so that it
is maintainable and its components are reusable.<BR>
<BR>
<HR>
<A HREF="book-ora001.html"><IMG SRC ="previous_motif.gif" ALT="Previous"></A>
<A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A>
<A HREF="book-ora003.html"><IMG SRC ="next_motif.gif" ALT="Next"></A>
</BODY>
</HTML>
